This rule applies whenever an if
statement is followed by one or more else if
statements; the final else if
should be followed by an else
statement.
The requirement for a final else
statement is defensive programming.
The else
statement should either take appropriate action or contain a suitable comment as to why no action is taken. This is
consistent with the requirement to have a final default
clause in a switch
statement.
Noncompliant code example
if (condition1) {
do_something();
} elseif (condition2) {
do_something_else();
}
Compliant solution
if (condition1) {
do_something();
} elseif (condition2) {
do_something_else();
} else {
throw new InvalidArgumentException('message');
}
Exceptions
When all branches of an if-elseif
end with return
, break
, continue
or throw
, the
code that comes after the if
implicitly behaves as if it was in an else
clause. This rule will therefore ignore that
case.